Mini proiect (48) - Trimiterea unui mesaj de la un ESP32 către WhatsApp

Trimiterea unui mesaj de la un ESP32 către WhatsApp 

Astăzi m-am jucat cu un senzor DHT11 refolosit, a cărui date am vrut să le trimis către WhatsApp prin intermediul Callmebot. Mai jos am documentat pas cu pas cum am procedat. 

De la senzorul DHT11 am citit temperatura și umiditatea, iar de la un server NTP citesc data și ora. Aceste date le împachetez și le trimit la interval de 10 min. În același timp am implementat în software astfel încât placa ESP32 să consume cât mai puțină energie pentru a asigura o viață lungă bateriei.

Pentru a trimite un mesaj de la un ESP32 către WhatsApp cu aceste date, folosind API-ul Callmebot, puteți urma următorii pași:

  •  Asigurați-vă că aveți acces la internet prin intermediul plăcii ESP32. Acest lucru poate fi realizat prin conectarea plăcii la o rețea Wi-Fi sau prin utilizarea unui modul de conectare GSM / GPRS.
  •  Conectați senzorul DHT11 la placa ESP32. Asigurați-vă că ați configurat corect pinii de date și de alimentare a senzorului în codul dvs, iar între pin-ul 1 și 2 se va conecta o rezistență de 1KOhm (vezi schema)
  •  Creați un cont Callmebot și obțineți o cheie API. Puteți găsi instrucțiunile pentru crearea unui cont și obținerea unei chei API pe site-ul Callmebot.
  •  Instalați biblioteca "UrlEncode" pentru ESP32. Aceasta va fi necesară pentru a codifica mesajele pentru a putea fi trimise
  •  Scrieți codul pentru a citi datele temperatură și umiditate de la senzorul DHT11 și pentru a le include într-un mesaj care va fi trimis prin intermediul API-ului Callmebot către un număr de WhatsApp specificat. Asigurați-vă că includeți cheia API Callmebot și numărul de telefon destinatar în codul dvs. (vezi codul de test de mai jos)
  • Încărcați codul pe placa ESP32 și verificați dacă mesajul a fost trimis cu succes către numărul de telefon specificat.

Reducerea și optimizarea consumului

 De asemenea, aș vrea să menționez că pentru a trimite mesaje periodic la intervale de timp specifice, am folosit chiar funcția loop din Arduino, pentru a controla intervalul de timp între trimiterile mesajelor, dar am vrut și un consum cât mai mic de curent având în vedere că folosesc o baterie drept sursă de alimentare, iar pentru asta am implementat să trimit procesorul ESP32 în "deep sleep", și îl trezesc period la 10 min.

Practic pentru reducerea și optimizarea consumului de energie al plăcii ESP32, am oprit complet dispozitivului atunci când placa nu este utilizată, și trezesc dispozitivul doar câteva secunde pentru a citi datele și pentru a le trimite datele pe WhatsApp.

În modul de "deep sleep", placa ESP32 își oprește toate componentele, cu excepția unui timer intern și a unui modul de trezire, și consumă foarte puțină energie. Pentru a trece placa ESP32 în modul de "deep sleep", puteți folosi funcția "esp_deep_sleep_start()" din biblioteca "esp32-hal-sleep.h".  

Pentru a trezi placa din modul de "deep sleep", puteți utiliza unul dintre următoarele moduri:

  • Un semnal de trezire extern, precum un semnal de întrerupere sau un semnal de rețea Wi-Fi.
  • Un timer intern, prin intermediul funcției "esp_deep_sleep_set_wakeup_time()".
  • Un pin de întrerupere, prin intermediul funcției "esp_deep_sleep_enable_ext0_wakeup()" sau "esp_deep_sleep_enable_ext1_wakeup()".

În acest proiect am folosit trezirea prin intermediul timer-ului intern. Practic mai pe scurt, ESP32-ul se trezește la 10 min citește temperatura și umiditatea, plus citește data și ora, și trimite toate aceste date prin intermediul Callmebot pe WhatsApp catre numărul meu de telefon.

Componente

Schema electronica/sistem

Trimiterea unui mesaj de la un ESP32 către Whatsup cu data, ora, și de la senzorul DTH11 temperatura și umiditatea

Cod de test

 

Rezultat


 

 După cum se observă în imaginea de mai jos am conectat o rezistență de 1KOhm între pinul 1 și 2, adică între Data și Vcc.

Trimiterea unui mesaj de la un ESP32 către Whatsup cu data, ora, și de la senzorul DTH11 temperatura și umiditatea

Iar alimentarea plăcii ESP32 am asigurat-o folosind o baterie de 9V și un regulator de 5V (plăcuța roșie). Din păcate nu am găsit acest regulator în fritzing, și în schema de mai sus am folosit o placă echivalentă (placa albastră din schemă). Ieșirea + si - de la regulator le-am conectat la VIN si GND de pe ESP32 (vezi și în schema de mai sus).

Trimiterea unui mesaj de la un ESP32 către Whatsup cu data, ora, și de la senzorul DTH11 temperatura și umiditatea
În momentul în care se trimite un mesaj se activează ledul albastru de pe placa ESP32.
Trimiterea unui mesaj de la un ESP32 către Whatsup cu data, ora, și de la senzorul DTH11 temperatura și umiditatea
 

Documentație proiect

Todo

  • Să printez o cutiuță faină pentru ESP32 
  • Să trimit aceeași informație către Home Assistant folosind protocolul MQTT

Afiliere eMag:

 Linkurile de la secțiunea "Componente" conțin adresa mea de afiliere la eMag.ro, iar dacă cumperi folosind aceste linkuri vei susține blogul meu. Mulțumesc! 

eMag Genius:
Hai și tu în Genius! Abonează-te la Genius 12 luni și primești beneficii premium și 20 lei card cadou eMAG. Profită acum! eMag Genius

Mulțumesc pentru atenție!

Pentru întrebari și/sau consultanță tehnică vă stau la dispozitie pe blog mai jos în secțiunea de comentarii sau pe email simedruflorin@automatic-house.ro. O zi și seară plăcută tuturor !  

 

Back to top of page


Etichete

Afișați mai multe

Arhiva

Afișați mai multe